package collection;

import java.util.ArrayList;
import java.util.List;

/*
 * 知识点5
 * List集合支持获取子集的操作
 * */
public class SubListDemo {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        for (int i = 0; i <= 9; i++) {
            list1.add(i);
        }
        System.out.println("list:" + list1);

        /*
         * E subList(int start,int end); //截取集合中的子集  含头不含尾
         * */
        //list:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        //截取集合中3-7的元素
        List<Integer> subList1 = list1.subList(3, 8);
        System.out.println("subList():" + subList1);

        //[30,40,50,60,70,]
        for (int i = 0; i < subList1.size(); i++) {
            subList1.set(i, subList1.get(i) * 10);
        }
        System.out.println("放大10之后的subList:" + subList1);
        //list集合输出结果时 3,4,5,6,7位置也编程了 30,40,50,60,70
        //对subList方法截取出来的子集进行操作就是对原集合对应的操作
        //sublist方法截取的元素 是将满足截取条件的元素地址返回给新的集合
        //sublist1集合 和 list1集合 当前指向的 3,4,5,6,7 其实是同一地址的 修改sublist1集合(子集)中的元素时 list1集合中的元素也会被修改
        System.out.println("list:" + list1);
        /*
         * 此方法的巧妙应用:
         * 例如:删掉list1集合中的 2-8的元素
         * 我们可以先将list集合中2-8的元素截取为一个子集然后对这个子集执行清空操作
         * 在清空子集的同事，完成对list集合清空2-8个元素的任务
         * */
        list1.subList(2, 9).clear();
        System.out.println("List:" + list1);


    }
}
